A method of sending data in a small packet may include a protocol that defines a packet structure (e.g., where the packet structure may contain a header and a pay-load). In the method, a receiver may receive a packet and/or check a sequence number of the packet. If there is a mismatch with the sequence number, the method may send a resend request for the packet to a sender of the packet. After receiving the resend request, the sender may send the packet again. Accordingly, the method may be time consuming and/or a speed of a serial communication between the sender and the receiver may slow down.
A handshaking may be another way of a data flow control. In a hardware handshaking, RTS (e.g., pin number 7 of a communication medium) and/or CTS (e.g., pin number 8 of the communication medium) of a communication medium (e.g., 9-pin and/or 25-pin) may be designed for the data flow control. One computer may signal with RTS (e.g., request to send) that the one computer wishes to send data, while the other computer may set CTS (e.g., clear to send) when the other computer is ready to receive the data. However, Implementation of the hardware handshaking may be difficult and/or time consuming.
In a software handshaking, two bytes called a XON (e.g., transmission on) and a XOFF (e.g., transmission off) that are not mapped to normal characters in an ASCII character set may be used. Whenever either one of two parties (e.g., computers) wants to interrupt a data flow from the other (e.g., full buffer), the either one of two parties may send the XOFF. When a buffer of the either one of two parties is purged again, the either one of two parties may send the XON to signal so that data may be sent again. However, the XON and/or the XOFF may be limited to text transmission and/or may not be used with binary data since binary files may tend to contain every single one of 256 characters.
In sum, the sending data in the small packet and/or the handshaking (e.g., hardware and/or software) may be difficult to implement. In addition, the sending data in the small packet and/or the handshaking may be time consuming and may even slow down a speed of communication between entities implementing the sending data in the small packet and/or the handshaking. Furthermore, a sophisticated algorithm (e.g., for a serial communication) may not be implemented in a pre-boot environment due to various limitations (e.g., limited memory, no Os support, single threaded, etc.).